/*
 * abstractModel.h
 *
 *  Created on: 14.03.2009
 *      Author: Christian Stupp
 */

#ifndef ABSTRACTMODEL_H_
#define ABSTRACTMODEL_H_

#include <string>
#include <map>
#include <vector>
#include <memory>
#include "array.h"
#include "staticObject.h"

namespace oal {
	class object;

	class abstractObject: public staticObject {
	protected:
		std::vector< object* >	items;
		int currentPosition;
	public:
//		std::map<std::string, std::string> values;
		array values;
		abstractObject();
		virtual ~abstractObject();
		virtual std::string get(std::string key) = 0;
		virtual bool set(std::string key, std::string value) = 0;
		virtual array getValues(void) = 0;
		virtual void setValues(array & newValues) = 0;
		virtual void append(object *newObject) = 0;
		virtual std::string debugIt(void) = 0;
		virtual std::string getIteratorData(std::string type,std::string tabLevel="") = 0;
		virtual std::string printIteratorData(std::string type,  array* values,std::string tablevel) =0;

	};
};
#endif /* ABSTRACTMODEL_H_ */
